package com.gengzp.mq.common.model.base;

import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * @ClassName PaginationResult
 * @Description 分页查询返回实体
 * @Author gengzp
 * @Date 2025/7/10 10:49
 */
@Data
public class MqPaginationResult<T> implements Serializable {

    @Serial
    private static final long serialVersionUID = -4340444408655855584L;

    /**
     * 当前页码
     */
    private Integer pageNum;

    /**
     * 当前每页数据条数
     */
    private Integer pageSize;

    /**
     * 总数据条数
     */
    private Integer total;

    /**
     * 总页数
     */
    private Integer pageCount;

    /**
     * 返回数据
     */
    private List<T> records;

    /**
     * 获取分页查询返回完整信息
     *
     * @param pageNum  页码
     * @param pageSize 每页数据条数
     * @param total    数据总条数
     * @param records  返回数据
     * @return 分页查询完整信息
     */
    public static <T> MqPaginationResult<T> get(Integer pageNum, Integer pageSize, Integer total, List<T> records) {
        MqPaginationResult<T> result = new MqPaginationResult<>();
        result.setPageNum(pageNum);
        result.setPageSize(pageSize);
        result.setTotal(total);
        result.setPageCount(total % pageSize == 0 ? total / pageSize : total / pageSize + 1);
        result.setRecords(records);
        return result;
    }

}
